Computer storage systems often replicate the data they store to reduce the chances of data loss in the even of equipment failure. Storage volumes are replicated or mirrored and distributed over a number of physical storage devices. The storage volumes may be partitions of a physical device or logical volumes. The management of input and output requests to the mirrored volumes, is carried out by a mirror manager application program (MMAP). The MMAP is responsible for ensuring that the data consistency is maintained across the mirrored volumes in the event a system crash. Such a failure can lead to inconsistency of data particularly if a write request was issued prior to the failure but not completed. In this case, the data on one mirror may become inconsistent with the data on the other mirrors. Recovering from such a failure involves the re-synchronisation of the data held in the mirror volumes. Until all such mirror volumes are fully recovered by synchronisation, a system that makes intensive use of its storage will operate in a degraded mode.
In smaller systems involving few mirror volumes, the recovery is often performed sequentially, volume by volume. On larger systems involving many mirror volumes, the recovery of mirror volumes is scheduled in parallel. The total number of such parallel recovery operations is normally limited to ensure a reasonable response to applications that need to access or update the data on both recovered and un-recovered volumes. Due to these practical considerations, the degraded mode of I/O operation can extend over many hours. Consequently, the performance of normal I/Os issued by applications on such mirrored volumes during that time can suffer significantly.